% update on 6/6
% Change Log
%% 将 P J 设置为全局变量 减小参数数量
%% 使用 nchoosek 计算排列数
%% 修改了某些变量名 和 参数顺序
function Qim = elementQ(S, i, m)
    % 返回Q i m
    global P J
    % >>> 6/4 将P J设为全局变量
    fac = @factorial; % 阶乘简写
    global PIE seq index
    PIE = zeros(1, J);
    index = 1;
    expandFor(m, J); % PIE作为全局变量 无需使用返回值传递
    PIE = removeRepeated(PIE);
    s_row = S(i, :); % 储存 S的第i行
    % PIE = zeros((m+1)(m+2)/2,J)  % pi（j）的所有排列组合 
    A = size(PIE);
    Qim = 0;
    for ii = 1 : A(1)
        pie = PIE(ii, :);
        cum_product = 1;
        for jj = 1 : J % 连乘
            % cell = fac(s_row(jj))/(fac(pie(jj))*fac(s_row(jj)-pie(jj)));
            cell = nchoosek(s(jj), pie(jj));
            cell = cell * p(jj)^pie(jj) * (1-p(jj))^(s_row(jj)-pie(jj));
            cum_product = cum_product * cell;
        end
        Qim = Qim + cum_product;
    end


